#define _CRT_SECURE_NO_WARNINGS 2
#include<iostream>

using  namespace std;


class Base
{
public:
	void fun1()
	{
		cout << "Base void fun1()" << endl;
	}
protected:
	int a_;
};

class Derive:public Base
{
public:
	void fun1()
	{
		cout << "Derive void fun1()" << endl;
	}

protected:
	int a_;
};

//class A
//{
//public:
//	class A()
//	{
//		cout << "A" << endl;
//	}
//
//	virtual void fun()
//	{}
//};
//
//class B :virtual public A
//{
//public:
//	class B()
//	{
//		cout << "B" << endl;
//
//	}
//	virtual void fun()
//	{}
//};
//
//class C :virtual public A
//{
//public:
//	class C()
//	{
//		cout << "C" << endl;
//
//	};
//	virtual void fun()
//	{}
//};
//
//class D :virtual public B, C
//{
//public:
//	class D()
//	{
//		cout << "D" << endl;
//
//	};
//	virtual void fun()
//	{}
//};

//int main()
//{
//	D d1;
//	Derive d;
//	cout << endl;
//	return 0;
//}

#include<iostream>
using namespace std;
//class A {
//public: A(const char* s) { cout << s << endl; } ~A() {}
//};
//class B : virtual public A {
//public: B(const char* s1, const char* s2) :A(s1) { cout << s2 << endl; }
//};
//class C : virtual public A {
//public: C(const char* s1, const char* s2) :A(s1) { cout << s2 << endl; }
//};
//class D : public B, public C {
//public: D(const char* s1, const char* s2, const char* s3, const char* s4) :B(s1, s2), C(s1, s3),A(s1)
//{
//	cout << s4 << endl;
//}
//};
//int main() {
//	D* p = new D("class A", "class B", "class C", "class D"); delete p; return 0;
//}

struct A {
	void foo() { printf("foo"); }
	virtual void bar() { printf("bar"); }
	A() { bar(); }
};
struct B :A {
	void foo() { printf("b_foo"); }
	void bar() { printf("b_bar"); }
};

//int main()
//{
//	int a = 9;
//	float* f = (float*) & a;
//	float f1 = a;
//	printf("%f", f1);
//	cout << *f << endl;
//	cout << f1 << endl;
//	//A* a = new B;
//	return 0;
//}

//int main()
//{
//	int a = 10;
//	switch (a/-4)
//	{
//	case 1:
//		cout << "1";
//		//break;
//	case 2:
//		cout << "3";
//		//break;
//	case 3:
//		cout << "4";
//	default:
//			break;
//	}
//	return  0;
//
//}

int main()
{
	int a = 1, b = 3, d;
	d=(a++, b--);
	cout << a << b << " " << d;
	return 0;
}

